﻿Public Interface iSlidingButtonStripItem
  ''' <summary>
  ''' Stores the current rectangle where a click is valid for this object.  The list item is responsible for storing this, but should
  ''' not augment the values.
  ''' </summary>
  Property ClickRectangle() As Rectangle

  ''' <summary>
  ''' When sliding between items, there may be an icon that appears over part of the screen.  The icon returned here will show in that view.
  ''' The icon should be scaled to the size of the rectangle sent in.
  ''' </summary>
  ''' <param name="rect">Rectangle that represents the size of the icon in the view.</param>
  ''' <returns>A bitmap to be drawn to the screen.  It should be the same size as the provided rectangle.</returns>
  ReadOnly Property ActivatedFloatingIcon(ByVal rect As Rectangle) As Bitmap

  ''' <summary>
  ''' A text name of the sliding item
  ''' </summary>
  Property Name() As String

  ''' <summary>
  ''' Draws the individual button item.
  ''' </summary>
  ''' <param name="g">Graphics object used for drawing</param>
  ''' <param name="rect">The actual rectangle area of the button.  Item should make sure that it scales to this rectangle.</param>
  ''' <param name="isHighlighted">A flag that indicates if the item is selected (finger is over the item or the item is the active item).</param>
  Sub DrawSlidingButtonStripItem(ByVal g As Drawing.Graphics, ByVal rect As Rectangle, ByVal isHighlighted As Boolean)

  ''' <summary>
  ''' Draws an overlay for the individual button item (if used).
  ''' </summary>
  ''' <param name="g">Graphics object used for drawing</param>
  ''' <param name="rect">The rectangle area based on finger position.  Overlay should make sure that it scales to this rectangle.</param>
  Sub DrawSlidingButtonStripItemOverlay(ByVal g As Drawing.Graphics, ByVal rect As Rectangle)

  ''' <summary>
  ''' This sub is called when this particular button is selected by the user, but only if another item was selected previous.  In other words
  ''' this sub is not called when a user is on this tab, then moves between tabs, but returns to let go on this tab.  This sub is called AFTER
  ''' OnMouseDown or OnMouseUp (depending on the type of selection).
  ''' </summary>
  Sub OnItemSelected()

  ''' <summary>
  ''' This sub is called whenever a finger is released on this item (whether or not the item has a corresponding OnMouseDown).
  ''' </summary>
  ''' <remarks></remarks>
  Sub OnMouseUp()

  ''' <summary>
  ''' This sub is called whenever a finger presses on this item (whether or not the item is ever selected).
  ''' </summary>
  Sub OnMouseDown()

  ''' <summary>
  ''' When a finger first moves over an item, this sub is called.
  ''' </summary>
  ''' <remarks></remarks>
  Sub OnMouseEnter()

  ''' <summary>
  ''' When a finger leaves this item and enters another, this sub is called.
  ''' </summary>
  Sub OnMouseLeave()
End Interface
